このページは、2008 年 2 月 21 日に最後に変更されました。
eDocs ホーム > BEA AquaLogic Data Services Platform 3.0/3.2 ドキュメント > ALDSP 3.2 新機能のドキュメント
暗号ベースのデータ編集の例
このトピックでは、一般的な操作を実行するときの暗号ベースのデータ編集の動作を示す例を紹介します。
データ サービス関数の例
この章の例では、以下のデータ サービスを使用します。
エンティティ データ サービス CustomerDS - データ サービスは、以下のスキーマに準拠する顧客に関する情報を返します。
CUSTOMER
SSN: xs:string
FIRST NAME: xs:string
LAST NAME: xs:string
CUSTOMER_SINCE: xs:date
この情報は、以下のようなデータを返すパブリック読み取り関数「getCUSTOMERS()」によって表示されます。
<CUSTOMER>
<SSN>123-45-6789</SSN>
<FIRST_NAME>John</FIRST_NAME>
<LAST_NAME>Smith</LAST_NAME>
<CUSTOMER_SINCE>2007-10-10</CUSTOMER_SINCE>
</CUSTOMER>
エンティティ データ サービス OrderDS - このデータ サービスは、以下のスキーマに準拠する顧客注文に関する情報を返します。
ORDER
ORDER_ID: xs:integer
CUSTOMER_SSN: xs:string
DATE: xs:date
STATUS: xs:string
この情報は、以下のようなデータを返すパブリック読み取り関数「getORDERS()」によって表示されます。
<ORDER>
<ORDER_ID>1000</ORDER_ID >
<CUSTOMER_SSN>123-45-6789</CUSTOMER_SSN>
<DATE>2007-10-10</DATE>
<STATUS>CLOSED</STATUS>
</ORDER>
<ORDER>
<ORDER_ID>2000</ORDER_ID >
<CUSTOMER_SSN>123-45-6789</CUSTOMER_SSN>
<DATE>2007-11-11</DATE>
<STATUS>OPEN</STATUS>
</ORDER>
結果の例
暗号されたフィールドの射影
データ サービス CustomerDS の SSN フィールドに対して暗号ベースのデータ編集がコンフィグレーションされている場合、getCUSTOMERS() 関数を直接呼び出すと、以下の結果が返されます。
<CUSTOMER>
<SSN>sjdlkggdlaklakskjfgk</SSN>
<FIRST_NAME>John</FIRST_NAME>
<LAST_NAME>Smith</LAST_NAME>
<CUSTOMER_SINCE>2007-10-10</CUSTOMER_SINCE>
</CUSTOMER>
SSN フィールドの値は暗号化され、それぞれ異なる SSN に対してユニークです。
暗号化されたフィールドに対する述語
データ サービス CustomerDS の SSN フィールドに対して暗号ベースのデータ編集がコンフィグレーションされている場合、以下の XQuery は () を返します。
for $x in p:getCUSTOMERS()
where $x/SSN eq "123-45-6789"
return $x
これは、暗号化されていない値と SSN の暗号化された値とを一致させようとするためです。
暗号化されたフィールドでの外部結合
外部結合を実行する次の XQuery クエリを見てみましょう。
for $x in p:getCUSTOMERS()
return
<CUSTOMER>
<SSN>{fn:data($x/SSN)}</SSN>
{
for $y in q:getORDERS()
where $x/SSN eq $y/CUSTOMER_SSN
return
<ORDER_ID>{fn:data($y/ORDER_ID)}</ORDER_ID>
}
</CUSTOMER>
CustomerDS の SSN フィールドと OrderDS の CUSTOMER_SSN フィールドに対して暗号ベースのデータ編集がコンフィグレーションされている場合、このクエリは以下の結果を返します。
<CUSTOMER>
<SSN>sjdlkggdlaklakskjfgk</SSN>
<ORDER_ID>1000</ORDER_ID >
<ORDER_ID>2000</ORDER_ID >
</CUSTOMER>
外部結合は、暗号化が設定されていないかのように実行されます。また、結果内の保護された要素の値は暗号化されます。
暗号化されたフィールドと暗号化されていないフィールドの結合
暗号ベースのデータ編集がデータ サービス CustomerDS の SSN フィールドに対してはコンフィグレーションされ、データ サービス OrderDS ではコンフィグレーションされていない場合、暗号化されたフィールドと暗号化されていないフィールドを結合する以下の XQuery クエリを使用します。
for $x in p:getCUSTOMERS()
return
<CUSTOMER>
<SSN>
{fn:data($x/SSN)}
</SSN>
{
for $y in q:getORDERS()
where $x/SSN eq $y/CUSTOMER_SSN
return
<ORDER_ID>
{fn:data($y/ORDER_ID)}
</ORDER_ID>
}
</CUSTOMER>
このクエリは () を返します。
SSN の暗号化された値が CUSTOMER_SSN の暗号化されていない値と一致しないため、この外部結合は結果を返すことができません。
暗号化されたフィールドによるグループ化
GROUP BY 句が含まれている以下の SQL クエリを考えてみましょう。
SELECT CUSTOMER_SSN, COUNT(*y)
FROM ORDERS
GROUP BY CUSTOMER_SSN
暗号ベースのデータ編集がデータ サービス OrderDS の CUSTOMER_SSN フィールドに対してコンフィグレーションされ、getOrders() 関数が SQL テーブル ORDERS にマップされる場合、この SQL クエリは以下の結果を返します。
(sjdlkggdlaklakskjfgk, 2)
GROUP BY 句は、暗号化が設定されていないかのように実行されます。また、結果内の保護されたカラムの値は暗号化されます。
関連項目
コンセプト
ガイド
参考
© BEA Systems